package controle;

import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.Calendar;

import infra.bean.ItemPedidoBean;
import infra.bean.PedidoServicoBean;




public class TransacaoPedidoServico implements TransacaoPedidoServicoPortType {
   


	public TransacaoPedidoServicoResponse obterNovoPedido(
			TransacaoPedidoServicoRequest params) throws RemoteException {

		TransacaoPedidoServicoParticipante part = new TransacaoPedidoServicoParticipante(this, params);		

		PedidoServicoBean pedidoBean;
		try {
			pedidoBean = part.obterNovoPedido();

		}  catch (SQLException e) {
			throw new RemoteException (e.getMessage());
		}
		
		Calendar cal = Calendar.getInstance();
		cal.setTime(pedidoBean.getData());
		ItemPedidoServicoBeanType[] itensPedido = new ItemPedidoServicoBeanType[0];
		controle.PedidoServicoBeanType pedidoBeanResponse = new controle.PedidoServicoBeanType(pedidoBean.getIdPedidoServico(), pedidoBean.getResponsavel(), pedidoBean.getDescricao(), "NOVO", cal, pedidoBean.getValorTotal(), itensPedido);

		return new TransacaoPedidoServicoResponse(pedidoBeanResponse);
		
	}


@Override
public TransacaoSalvarPedidoServicoResponse salvarPedido(
		TransacaoSalvarPedidoServicoRequest params) throws RemoteException {
	TransacaoPedidoServicoParticipante part = new TransacaoPedidoServicoParticipante(this, params);		

	PedidoServicoBean pedidoBean = new PedidoServicoBean();
	pedidoBean.setIdPedidoServico(params.getPedidoServicoBean().getIdPedidoServico());
	pedidoBean.setDescricao(params.getPedidoServicoBean().getDescricao());
	pedidoBean.setStatus(params.getPedidoServicoBean().getStatus());
	pedidoBean.setResponsavel(params.getPedidoServicoBean().getResponsavel());
	pedidoBean.setValorTotal(params.getPedidoServicoBean().getValorTotal());
	
	
	ItemPedidoBean[] itensPedido = new ItemPedidoBean[params.getPedidoServicoBean().getItemPedidoServicoBean().length];
	for (int i=0; i< itensPedido.length; i++) {
		ItemPedidoBean itemPedido = new ItemPedidoBean();
		itemPedido.setDescricao(params.getPedidoServicoBean().getItemPedidoServicoBean(i).getDescricao());
		itemPedido.setIdTipoItem(params.getPedidoServicoBean().getItemPedidoServicoBean(i).getIdTipoItem());
		itemPedido.setIdPedidoServico(pedidoBean.getIdPedidoServico());
		itemPedido.setIdItemPedido(params.getPedidoServicoBean().getItemPedidoServicoBean(i).getIdItemPedido());
		itemPedido.setQuantidade(params.getPedidoServicoBean().getItemPedidoServicoBean(i).getQuantidade());
		itemPedido.setValor(params.getPedidoServicoBean().getItemPedidoServicoBean(i).getValor());
		itensPedido[i] = itemPedido;
		
	}
	
	pedidoBean.setItensPedido(itensPedido);
	int idPedido = 0;
	
	try {
		idPedido = part.salvarPedido(pedidoBean);

	}  catch (Exception e) {
		throw new RemoteException (e.getMessage());
	}
	
	return new TransacaoSalvarPedidoServicoResponse(idPedido);
	
}





}
